//package com.example.demo.redislock.support;
//
//import lombok.extern.slf4j.Slf4j;
//import org.redisson.api.RLock;
//import org.redisson.api.RedissonClient;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//import java.util.concurrent.TimeUnit;
//
///**
// * @author lys4134
// * @ClassName DistributedRedisLock
// * @Date 2022/03/17 09:35:49
// * @Description DistributedRedisLock 分布式Redis锁
// * @Version 1.0
// **/
//@Slf4j
////@Component
//public class DistributedRedisLock {
//
//    @Autowired
//    private RedissonClient redissonClient;
//
//    // 加锁
//    public Boolean lock(String lockName) {
//        if (redissonClient == null) {
//            log.info("DistributedRedisLock redissonClient is null");
//            return false;
//        }
//
//        try {
//            RLock lock = redissonClient.getLock(lockName);
//            // 锁10秒后自动释放，防止死锁
//            lock.lock(10, TimeUnit.SECONDS);
//
//            log.info("Thread [{}] DistributedRedisLock lock [{}] success", Thread.currentThread().getName(), lockName);
//            // 加锁成功
//            return true;
//        } catch (Exception e) {
//            log.error("DistributedRedisLock lock [{}] Exception:", lockName, e);
//            return false;
//        }
//    }
//
//    // 释放锁
//    public Boolean unlock(String lockName) {
//        if (redissonClient == null) {
//            log.info("DistributedRedisLock redissonClient is null");
//            return false;
//        }
//
//        try {
//            RLock lock = redissonClient.getLock(lockName);
//            lock.unlock();
//            log.info("Thread [{}] DistributedRedisLock unlock [{}] success", Thread.currentThread().getName(), lockName);
//            // 释放锁成功
//            return true;
//        } catch (Exception e) {
//            log.error("DistributedRedisLock unlock [{}] Exception:", lockName, e);
//            return false;
//        }
//    }
//
//}
//
